"""

浅拷贝
    python的拷贝一般都是浅拷贝。拷贝时，对象包含的子对象内容不拷贝。因此，源对象和拷贝对象会引用同一个子对象
深拷贝
    使用copy模块的deepcopy函数，递归拷贝对象中包含的子对象。源对象和拷贝对象所有的子对象也不同
"""

# 测试对象的引用赋值、浅拷贝、深拷贝
import copy


class MobilePhone:
    def __init__(self, cpu):
        self.cpu = cpu


class CPU:
    pass


c = CPU()
m = MobilePhone(c)
print("----浅拷贝-------")
m2 = copy.copy(m)  # m2是新拷贝的另一个手机对象
print("m：", id(m))
print("m2：", id(m2))
print("m的cpu：", id(m.cpu))
print("m2的cpu：", id(m2.cpu))  # m2和m拥有了一样的cpu对象
print("----深拷贝--------")
m3 = copy.deepcopy(m)
print("m：", id(m))
print("m3：", id(m3))
print("m的cpu：", id(m.cpu))
print("m3的cpu：", id(m3.cpu))  # m3和m拥有不一样的cpu对象


# ----浅拷贝-------
# m： 1879267229360
# m2： 1879267228592
# m的cpu： 1879267229648
# m2的cpu： 1879267229648
# ----深拷贝--------
# m： 1879267229360
# m3： 1879267222256
# m的cpu： 1879267229648
# m3的cpu： 1879267221968
